package handle

import (
	utilx "protocx/entity"
	"protocx/protobufx"

	"github.com/kataras/iris/v12"
	"github.com/kataras/iris/v12/context"
)

type Resp struct {
}

func (r Resp) InitRoute(party iris.Party) {
	p := party.Party("/resp")
	p.Get("/string", r.String())
	p.Get("/json", r.Json())
	p.Get("/jsonp", r.JSONP())
	p.Get("/xml", r.XML())
	p.Get("/binary", r.Binary())
	p.Get("/markdown", r.Markdown())
	p.Get("/yaml", r.YAML())
	p.Get("/textYaml", r.TextYAML())
	p.Get("/text", r.Text())
	p.Get("/html", r.HTML())
	p.Get("/problem", r.Problem())
	p.Get("/protobuf", r.Protobuf())
}
func (r Resp) String() iris.Handler {
	return func(context *context.Context) {
		context.WriteString("string")
	}
}
func (r Resp) Json() iris.Handler {
	return func(context *context.Context) {
		context.JSON(utilx.Resp{
			Code: 200,
			Msg:  "",
			Data: nil,
		}, iris.JSON{Indent: "", Secure: true})
	}
}
func (r Resp) JSONP() iris.Handler {
	return func(context *context.Context) {
		context.JSONP(&protobufx.LoginRequest{
			Code: 879,
		})
	}
}
func (r Resp) XML() iris.Handler {
	return func(context *context.Context) {
		context.XML(utilx.Resp{
			Code: 200,
			Msg:  "",
			Data: nil,
		})
	}
}
func (r Resp) Binary() iris.Handler {
	return func(context *context.Context) {
		context.Binary([]byte("abcd"))
	}
}
func (r Resp) Markdown() iris.Handler {
	return func(context *context.Context) {
		context.Markdown([]byte("abcd"))
	}
}
func (r Resp) YAML() iris.Handler {
	return func(context *context.Context) {
		context.YAML(utilx.Resp{
			Code: 200,
			Msg:  "",
			Data: nil,
		})
	}
}
func (r Resp) TextYAML() iris.Handler {
	return func(context *context.Context) {
		context.TextYAML(&protobufx.LoginRequest{
			Code: 879,
		})
	}
}
func (r Resp) Text() iris.Handler {
	return func(context *context.Context) {
		context.Text("Text%s", "as")
	}
}
func (r Resp) HTML() iris.Handler {
	return func(context *context.Context) {
		context.HTML("<h1>1</h1>")
	}
}
func (r Resp) Problem() iris.Handler {
	return func(context *context.Context) {
		context.Problem(utilx.Resp{
			Code: 200,
			Msg:  "",
			Data: nil,
		})
	}
}
func (r Resp) Protobuf() iris.Handler {
	return func(context *context.Context) {
		context.Protobuf(&protobufx.LoginRequest{
			Code: 879,
		})
	}
}
